//开辟新数组的方法，不符合题意
var removeElement1 = function(nums, val) {
    if (nums.length === 0) return 0;
    var arr = [];
    for (let i = 0; i < nums.length; i++) {
        if (nums[i] === val) {
            arr.push(i);
        }
    }
    while (arr.length !== 0) {
        nums.splice(arr[arr.length - 1], 1);
        arr.pop();
    }
    return nums.length;
};

var s = [1, 2 ,3];
console.log(removeElement1(s, 3));

//不开辟新数组的方法
/*
    [0,1,2,2,3,0,4,2] 移除2
    思路是拷贝覆盖
    数组中还剩 0 1 3 0 4
    重定义一个变量 ans，把不等于2的元素按顺序重新排列在nums数组中。
 */

var removeElement2 = function(nums, val) {
    var ans = 0;
    for (let i = 0; i < nums.length; i++) {
        if (nums[i] !== val) {
            nums[ans++] = nums[i];
        }
    }
    nums.length = ans;
    return ans;
};

var arr  = [0,1,2,2,3,0,4,2];
console.log(removeElement2(arr, 2));




